package com.dev.base;


/**
 * @author 戴 骥
 * @date 2021-08-22 10:19
 */
public class FuncLambda {

    public static void main(String[] args) {

        /*
         * 方法调用
         */
        ReturnNoParam returnNoParam = () -> {
            return num();
        };
        System.out.println("returnNoParam.method() = " + returnNoParam.method());

        /**
         * 静态方法调用
         * 原始写法
         */
        ReturnOneParam returnOneParam = (a) -> {
            return numOneParam(a);
        };
        System.out.println("returnNoParam.method(a) = " + returnOneParam.method(1));

        /*
         * 静态方法调用
         * 精简写法
         */
        ReturnOneParam returnOneParam2 = FuncLambda::numOneParam;
        System.out.println("returnOneParam2 = " + returnOneParam2.method(2));

        /*
         * 普通方法调用
         * 精简写法
         * 1. 必须new实例化一个对象
         */
        FuncLambda funcLambda = new FuncLambda();
        ReturnOneParam returnOneParam1 = funcLambda::tow;
        System.out.println("returnOneParam1.method(9) = " + returnOneParam1.method(9));

    }

    /**
     * 这是LambdaTest03里面的一个静态方法
     *
     * @return
     */
    public static int num() {
        return 10000;
    }

    /**
     * 这是LambdaTest03里面的一个静态方法
     *
     * @return
     */
    public static int numOneParam(int a) {
        return 10000 + a;
    }

    /**
     * 这是LambdaTest03里面的一个成员方法
     */
    public int tow(int a) {
        return a + 100000;
    }
}
